This invention relates to a computer software security system for preventing the user of a computer program from reproducing the program without interfering with normal use of the program in the computer for which it was designed and without interfering with normal maintenance procedures for that computer.
For any given computer function there is a large number of particular programs that can be written to perform that function, and these programs, though they all perform the same ultimate function, may differ greatly in terms of the number of steps employed, the memory capacity required to store the program, the time required to run the program, the compatibility of the program with other programs used on the same computer or in the same data processing system, the adaptibility of the program for other uses and the number of man hours required to write the program. These differences are very important in computer operation and can make a substantial difference in the cost of computer operation since computer time, computer memory capacity, and skilled programming personnel are all relatively expensive.
The cost advantages that a particular program offers to the computer user are usually reflected in the price placed on the program by the program designer, but this price is normally based upon use of the program for its intended computer function and does not compensate the program designer if the program is reproduced and modified by the user for other computer functions. If the price of the program is set high enough to compensate the program designer for all possible modifications of the program, this would be unfair to the users who only use the program for its intended purpose, and also might forfeit any cost advantages of the program in competition with other program designers or even price the program out of the market.
Although the program designer can utilize copyright protection to prevent unauthorized reproduction of his programs, or to claim damages for unauthorized reproduction, no patent protection is available for computer programs per se under the present state of the law to prevent the program user from utilizing the same basic program with modifications for other purposes or from selling such modified programs in competition with the program designer. Accordingly, there exists a need for a computer software security system that will prevent a computer program user from reproducing the program without preventing normal use of the program to perform its intended function and without interfering with normal maintenance procedures in the computer using the program.
Various methods and apparatus for enciphering and deciphering digital data for security purposes have been devised in the past as disclosed in U.S. Pat. No. 3,868,631, which was issued on Feb. 25, 1975, for a "DIGITAL CRYPTOGRAPHIC SYSTEM AND METHOD;" in U.S. Pat. No. 3,958,081, which was issued on May 18, 1976, for a "BLOCK CIPHER SYSTEM FOR DATA SECURITY;" in U.S. Pat. No. 2,981,794, which was issued on Apr. 25, 1961, for a "TELEPRINTER SECRECY SYSTEM;" and in U.S. Pat. No. 3,950,616, which was issued on Apr. 13, 1976, for "ALIGNMENT OF BYTES IN A DIGITAL DATA BIT STREAM." However, these past cryptographic systems are designed to protect digital data in transit from one point to another against being intercepted in transit by an outside party and do not prevent the data from being reproduced by the lawful user of the device at the receiving end of the data transmission link. Accordingly, these prior art cryptographic systems do not solve the problem to which this invention is addressed.